﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MovieDatabase
{
    /// <summary>
    /// For the specific result returned by passing a valid title
    /// </summary>
    class SearchResultByTitle
    {
        public Boolean adult { get; set ;}
        public string backdrop_Path { get; set; }
        public int id { get; set; }
        public string original_title { get; set; }
        public string release_date { get; set; }
        public string poster_path { get; set; }
        public double popularity { get; set; }
        public string title { get; set; }
        public double vote_average { get; set; }
        public int vote_count { get; set; }
    }

    /// <summary>
    /// Master movie class which houses all of the needed results
    /// </summary>
    /*class Movie
    {
        public Movie()
        {
            SearchResultByIDInfo = new List<SearchResultByID>();
            CastAndCrewList = new List<CastAndCrew>();
        }
        public string Title { get; set; }
        public List<SearchResultByID> SearchResultByIDInfo { get; set; }
        public List<CastAndCrew> CastAndCrewList { get; set; }

    }*/

    /// <summary>
    /// For the array of results returned
    /// </summary>
    class SearchResults
    {
        public int page { get; set; }
        public List<SearchResultByTitle> results { get; set; }
        public int totalPages { get; set; }
        public int totalResults { get; set; }
    }

    /// <summary>
    /// For the results returned by passing a valid id.
    /// </summary>
    class SearchResultByID
    {
        public Boolean adult { get; set ;}
        public string backdrop_Path { get; set; }
        public BelongsToCollection belongs_to_collection { get; set; }
        public int budget { get; set; }
        public List<GenreItem> genres { get; set; }
        public string homepage { get; set; }
        public int id { get; set; }
        public string imdb_id { get; set; }
        public string original_title { get; set; }
        public string overview { get; set; }
        public double popularity { get; set; }
        public string poster_path { get; set; }
        public List<ProductionCompany> production_companies { get; set; }
        public List<ProductionCountry> production_countries {get;set;}
        public string release_date { get; set; }
        public int revenue { get; set; }
        public short runtime { get; set; }
        public List<SpokenLanguage> spoken_lanuages { get; set; }
        public string status { get; set; }
        public string tagline { get; set; }
        public string title { get; set; }
        public double vote_average { get; set; }
        public int vote_count { get; set; }

    }

    /// <summary>
    /// For the cast and crew of a movie.
    /// </summary>
    class CastAndCrew
    {
        public int id { get; set; }
        public List<Castmember> Cast {get;set;}
        public List<CrewMember> Crew { get; set; }
        public CastAndCrew()
        {
            Cast = new List<Castmember>();
            Crew = new List<CrewMember>();
        }
    }

    /// <summary>
    /// For all the info regarding the cast member of a movie.
    /// </summary>
    class Castmember
    {
        public int cast_id { get; set; }
        public string character { get; set; }
        public string credit_id { get; set; }
        public int id { get; set; }
        public string name { get; set;}
        public int order { get; set; }
        public string profile_path { get; set; }
    }

    /// <summary>
    /// For all the info regarding the crew member of a movie.
    /// </summary>
    class CrewMember
    {
        public string credit_id { get; set; }
        public string department { get; set; }
        public int id { get; set; }
        public string job { get; set; }
        public string name { get; set; }
        public string profile_path { get; set; }
    }

    class PersonID
    {
        public string Adult { get; set; }
        public string Also_known_as { get; set; }
        public string Biography { get; set; }
        public DateTime Birthday { get; set; }
        public DateTime Deathday { get; set; }
        public string Homepage { get; set; }
        public int ID { get; set; }
        public string name { get; set; }
        public string place_of_birth { get; set; }
        public string profile_path { get; set; }
    }

    class BelongsToCollection
    {
        public int id { get; set; }
        public string name { get; set; }
        public string poster_path { get; set; }
        public string backdrop_path { get; set; }
    }

    /// <summary>
    /// For what genres a movie is listed under.
    /// </summary>
    class GenreItem
    {
        public int id { get; set; }
        public string name { get; set; }
    }

    class ProductionCompany
    {
        public string name { get; set; }
        public int id { get; set; }
    }

    class ProductionCountry
    {
        public string iso_3166_1 { get; set; }
        public string name { get; set; }
    }

    class SpokenLanguage
    {
        public string iso_639_1 { get; set; }
        public string name { get; set; }
    }

    class Country
    {
        public string iso_3166_1 { get; set; }
        public string certification { get; set; }
        public DateTime release_date { get; set; }
    }

    /// <summary>
    /// For the movies pulled in from the movietitles.txt file.
    /// </summary>
    class moviesFromFile
    {
        public string Title { get; set; }
        public string ReleaseYear { get; set; }
    }
    class GridData
    {
        public string Title { get; set; }
        public string ReleaseYear { get; set; }
        public int ID { get; set; }
        public short Runtime { get; set; }
        public int Budget { get; set; }
        public int Revenue { get; set; }
        public int TMDBID { get; set; }
        public string IMDBID { get; set; }
        public string Poster_path { get; set; }
        public string Backdrop_path { get; set; }
        public string overview { get; set; }
        public string tagline { get; set; }
        public string status { get; set; }
        public double vote_average { get; set; }
        public int vote_count { get; set; }
    }
}
